6
תגובות

PHP | עזרה בפונקציה של MVC

פתח shlomo120 ,
אהלן .
בניתי איזה פונקציה קטנה של קבצי עיצוב שעובדת על MVC (כלומר בקובץ אין משתנים אלא דברים כאלו {{var4}} )
אבל יש בפונקציה הזו חיסרון אחד . היא לא יכולה לקרוא משתנים מבחוץ כמו של MYSQLI או משהו כזה . אלא רק מה שאני מגדיר כפרמטר בפונקציה .
הינה הקוד :
static function including($file,$var ="" , $var1 = "", $var2 = "" , $var3 = "" , $var4 = "", $var5 = "", $var6 = "", $var7 = "", $var8 = "", $var9 = "", $var10 = "")
    {
   
        $file_path = 'system/template/'.$file.'.tpl';
        if(file_exists($file_path))
        {
            $file =  file_get_contents($file_path);
            preg_match_all('@{{([^{{}}]*)}}@', $file, $matches);
            if ( count($matches[1]) > 0 )
            {
                    $trimedValue = '';
                    foreach ( $matches[1] as $arg )
                    {
                        $trimedValue = trim($arg);
                        $file = preg_replace('@\{\{' . $arg . '\}\}@', $$trimedValue, $file);
                    }
                    return $file;
            }else return $file;
               
               
        }else return "The File '$file' Doesnt Exists... (FilePath : '$file_path')";


    }

אם מישהו יודע אולי דרכים כדי שהפונקציה הזו תהיה יותר גמישה ונוחה שיכתוב כאן ..
(הפונקציה הזו היא חלק ממחלקה של העיצוב .לפני ששמתי אותה במחלקה כלומר לכל חלק עיצוב באתר כתבתי את כל הקוד הזה , היא שלחה לדף כל משתנה שנוצר בעמוד . אני רוצה לעשות אותו הדבר - שישלח את כל המשתנים בעמוד לMVC . מקווה שאני ברור ... )
תודה

6 תשובות

avatar ענה shlomo120 ב 02 לאוגוסט 2012 #

לא משנה הסתדרתי ...
הינה הקוד שאני עובד איתו עכשיו :

static function template( $model, $params = array() )
  {
    $model = 'system/template/'.$model.'.tpl';
      if(!file_exists($model) || !is_readable($model))
      {
      return "Error: failed to load the template $model";
      }
    $model = file_get_contents($model);
      $keys = array_keys($params);
    for( $i = 0; $i < sizeof($keys); $i++)
      $keys[$i] = '[{{'.$keys[$i].'}}]';
    return preg_replace( $keys, $params, $model);
   
  }


ושימוש הוא כזה :
$data = Array( 'time' =>  date("d/m/y H:i:s"));
 echo style::template("test",$data);

avatar ענה raslin ב 02 לאוגוסט 2012 #

אתה צריך להתאמן על שמות טובים יותר (אינפורמטיבים יותר) לפונקציות,
דבר שני, תוותר על העניין הזה של מידע מתוך מערך בעיצוב, זה לא קשור ל MVC,
זה סתם טכניקה,
יש מערכות צד3 כמו smarty ו savant לזה,
אני ממליץ קובץ PHP רגיל, עם משתנים שמועברים מהקונטרולר וזהו,
שיהיה בהצלחה

avatar ענה shlomo120 ב 02 לאוגוסט 2012 #

אני לא רוצה לעבוד עם מערכות צד 3 ...
אני אוהב לכתוב לבד . ככה אני יכול להתאים את זה במדיוק לצרכים של האתר שלי .
אני לא עובד עם קונטרולר . זה אתר מבוסס תכנות מונחה עצמים אבל ללא framework ...

avatar ענה cthulhu ב 03 לאוגוסט 2012 #

מה הקשר בין הקוד שכתבת לבין mvc?

avatar ענה raslin ב 03 לאוגוסט 2012 #

אם אתה לא עובד עם קונטרולר, אז זה לא MVC,
ואם לא MVC, אז מה זה הדבר הזה שניסית לעשות עכשיו?

avatar ענה shlomo120 ב 03 לאוגוסט 2012 #

זה לייבא את הסיידבר ואת חלקי העיצוב תוך שמירה על דינמיות.
לדוגמא כמו כאן באתר אני יכול לייבא את הסיידבר ולשלוח לבלוק של המשתמש את השם שלו והאיידי .ואם בא לי לשנות משהו בעיצוב אני משנה בקובץ אחד ולא עובר על כל הקבצים .